package yz.mr.count;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * 1.Mapper阶段
 *  *          按行读取文本数据，并且对当前行的数据进行数据分析
 *  *          ①读取每一行的数据   1500100001,1000001,98
 *  *          ②对每一行的数据进行切分
 *  *          ③需要组合key value将数据写出  以学生编号进行key  学生的成绩进行value
 *  *              因为需要将学生进行分组，将相同学生的成绩汇总在一起，在对成绩进行累加
 */

public class ScoreCountMapper extends Mapper<LongWritable, Text,Text, IntWritable> {
    /**
     *
     * @param key  偏移量
     * @param value  一行数据
     * @param context
     * @throws IOException
     * @throws InterruptedException
     */
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
        String[] split = value.toString().split(",");
            String id = split[0];
            int score = Integer.parseInt(split[2]);
            //这样就获取到了学生数据

        //写出数据
        context.write(new Text(id),new IntWritable(score));
    }
}
